home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 286_01 / exetime.c < prev    next >
Text File  |  1989-05-23  |  3KB  |  151 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3.  
  4. /* #define SCREEN */
  5.  
  6. struct TFMT1 {
  7.     unsigned char min, hr, hsec, sec;
  8. };
  9.  
  10. struct TFMT2 {
  11.     unsigned int hrmin, sec;
  12. };
  13.  
  14. union HHMMSShh {
  15.     struct TFMT2 l;
  16.     struct TFMT1 s;
  17. };
  18.  
  19. main()
  20. {
  21.     union HHMMSShh time1, time2;
  22.     register int loop1, loop2;
  23.     int frame_nu;
  24.  
  25.     GRADinit();
  26. #ifdef SCREEN
  27.     setgraph();
  28. #else
  29.     frame_nu=CreateFrame(720,348);
  30.     SelectFrame(frame_nu);
  31. #endif
  32.     PlotType(2); 
  33.     printf("Time is in HH:MM:SS.hh (hh is one-hundredth second portion)\n\n");
  34.     printf("Blank loops     = ");
  35.     dostime(&time1);
  36.     for (loop1=1000; loop1 > 0; loop1--) {
  37.         for (loop2=1000; loop2 > 0; loop2--) ;
  38.     }
  39.     dostime(&time2);
  40.     elapsetime(time1,time2);
  41.     printf("\n");
  42.     printf("HorzLine (1)    = ");
  43.     dostime(&time1);
  44.     for (loop1=1000; loop1 > 0; loop1--) {
  45.         HorzLine(0,0,300,1);
  46.     }
  47.     dostime(&time2);
  48.     elapsetime(time1,time2);
  49.     printf("\n");
  50.     printf("HorzLine (20)   = ");
  51.     dostime(&time1);
  52.     for (loop1=1000; loop1 > 0; loop1--) {
  53.         HorzLine(0,0,300,20);
  54.     }
  55.     dostime(&time2);
  56.     elapsetime(time1,time2);
  57.     printf("\n");
  58.     printf("VertLine (1)    = ");
  59.     dostime(&time1);
  60.     for (loop1=1000; loop1 > 0; loop1--) {
  61.         VertLine(0,0,300,1);
  62.     }
  63.     dostime(&time2);
  64.     elapsetime(time1,time2);
  65.     printf("\n");
  66.     printf("VertLine (2)    = ");
  67.     dostime(&time1);
  68.     for (loop1=1000; loop1 > 0; loop1--) {
  69.         VertLine(0,0,300,2);
  70.     }
  71.     dostime(&time2);
  72.     elapsetime(time1,time2);
  73.     printf("\n");
  74.     printf("VertLine (32)   = ");
  75.     dostime(&time1);
  76.     for (loop1=1000; loop1 > 0; loop1--) {
  77.         VertLine(0,0,300,32);
  78.     }
  79.     dostime(&time2);
  80.     elapsetime(time1,time2);
  81.     printf("\n");
  82.     printf("Circle  (100)   = ");
  83.     dostime(&time1);
  84.     for (loop1=1000; loop1 > 0; loop1--) {
  85.         Circle(360,174,100);
  86.     }
  87.     dostime(&time2);
  88.     elapsetime(time1,time2);
  89.     printf("\n");
  90.     printf("Ellipse(100,100)= ");
  91.     dostime(&time1);
  92.     for (loop1=1000; loop1 > 0; loop1--) {
  93.         Ellipse(360,174,100,100);
  94.     }
  95.     dostime(&time2);
  96.     elapsetime(time1,time2);
  97.     printf("\n");
  98. #ifdef SCREEN
  99.     settext();
  100. #endif
  101. }
  102.  
  103. dostime(timerec)
  104. union HHMMSShh *timerec;
  105. {
  106.     union REGS inregs, outregs;
  107.  
  108.     inregs.h.ah=0x2c;
  109.     intdos(&inregs, &outregs);
  110.     timerec->l.hrmin = outregs.x.cx;
  111.     timerec->l.sec = outregs.x.dx;
  112. }
  113.  
  114. elapsetime(time1,time2)
  115. union HHMMSShh time1, time2;
  116. {
  117.     union HHMMSShh etime;
  118.     int temp, carry;
  119.     
  120.     temp=time2.s.hsec-time1.s.hsec;
  121.     if (temp >= 0) {
  122.          etime.s.hsec=temp;
  123.          carry=0;
  124.     } else {
  125.         etime.s.hsec=100+temp;
  126.         carry=1;
  127.     }
  128.     temp=time2.s.sec-time1.s.sec-carry;
  129.     if (temp >= 0) {
  130.          etime.s.sec=temp;
  131.          carry=0;
  132.     } else {
  133.         etime.s.sec=60+temp;
  134.         carry=1;
  135.     }
  136.     temp=time2.s.min-time1.s.min-carry;
  137.     if (temp >= 0) {
  138.          etime.s.min=temp;
  139.          carry=0;
  140.     } else {
  141.         etime.s.min=60+temp;
  142.         carry=1;
  143.     }
  144.     temp=time2.s.hr-time1.s.hr-carry;
  145.     etime.s.hr=(temp>=0) ? temp : 24+temp;
  146.  
  147.     printf("%02d:%02d:%02d.%02d",
  148.              etime.s.hr,etime.s.min,etime.s.sec,etime.s.hsec);
  149. }
  150.  
  151.